www.gusucode.com > (粗糙集数据分析工具箱) matlab源码程序 > matlab代做 修改 程序工具箱 (粗糙集数据分析工具箱) matla 中使用/rsda/disperse.m

    function xd=disperse(x,b,n)  % x是要离散的原始数据;b是离散的区间,第一行是第一个条件属性的离散区间 
[p,q]=size(x);              % n是决策属性的数
xx=ones(p,q);
[p1,q1]=size(b);
%下面是离散的过程
for i=1:p
    for j=1:q-n
        a=x(i,j);
        for jj=1:q1
            if a>b(j,jj)
                xx(i,j)=xx(i,j)+1;
            end
        end
    end
end
xx(:,q)=x(:,q);
y=xx;
%yd=sam_del(y);
%下面是对离散的数据的处理
%就是对离散的数据进行归类处理,如果各个条件属性都相同而决策属性不同,则留下出现次数多的数据
for i=1:p
    num1=0;
    num2=0;
    for j=1:p
        if i~=j
            [y1,n1]=equal(y(i,1:q-n),y(j,1:q-n));
            [y2,n2]=equal(y(i,q-n:q),y(n,q-n:q));
            if n1==1&n2==0
                num1=num1+1;
            end
            if n1==1&n2==1
                num2=num2+1;
            end        
        end
    end
        if num2<num1
            y(i,1:q)=0;
        end
    end
    
    nn=0;
    for i=1:p
        if y(i,:)==0
            continue;
        else
            nn=nn+1;
            yy(nn,:)=y(i,:);
        end
    end
    xd=sam_del(yy);